package common

import (
	"database/sql"
	_ "github.com/denisenkom/go-mssqldb"
	"github.com/pkg/errors"
	"log"
)

// 定义一个全局对象Db
var Db *sql.DB

// 定义一个初始化数据库的函数
func InitDB() (err error) {
	// DSN:Data Source Name
	dsn, err := getDSN()
	if err != nil {
		return
	}
	Db, err = sql.Open("sqlserver", dsn)
	if err != nil {
		return errors.Wrap(err, "ERR: fail to open sqlserver")
	}
	// 尝试与数据库建立连接（校验dsn是否正确）
	err = Db.Ping()
	if err != nil {
		return errors.Wrap(err, "ERR: fail to connect db")
	}
	Db.SetMaxOpenConns(10)
	Db.SetMaxIdleConns(2)
	return
}

func GetDb() *sql.DB {
	return Db
}

func init() {
	err := InitDB()
	if err != nil {
		log.Fatalf("add error info: %+v", err)
	}
}
